#define _CRT_SECURE_NO_WARNINGS 1
//#include<stdio.h>
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int left = 0, right = sz - 1 ;
//	int target = 0;
//	scanf("%d", &target);
//	while (left <= right)
//	{
//		int mid = left + ((right - left) / 2);
//		if (arr[mid] < target)
//		{
//			left = mid + 1;
//		}
//		else if (arr[mid] > target)
//		{
//			right = mid - 1;
//		}
//		else
//		{
//			printf("找到了，下标是：%d", mid);
//			break;
//		}
//	}
//	if (left > right)
//		printf("找不到");
//	return 0;
//}
//#include<stdio.h>
//#include<string.h>
//#include<windows.h>
//int main()
//{
//	char arr1[] = "hello world!";
//	char arr2[] = "############";
//	int left = 0, right = strlen(arr1) - 1;
//	while (left <= right)
//	{
//		arr2[left] = arr1[left];
//		arr2[right] = arr1[right];
//		printf("%s\n", arr2);
//		Sleep(1000);//睡眠一千毫秒 即一秒 S是大写
//		system("cls");//清空屏幕
//		left++;
//		right--;
//	}
//	printf("%s\n", arr2);
//	return 0;
//}
//#include<stdio.h>
//#include<string.h>
//int main()
//{
//	char password[20] = { 0 };
//	//假设正确的密码字符串是123456
//	int i = 0;
//	int j = 0;
//	for (i = 2; i >=0; i--)
//	{
//		printf("请输入密码:");
//		scanf("%s", password);
//		//if (password == "123456") 字符串比较不能直接用等号，这种比较是在比较首字符的地址
//		if (strcmp(password, "123456") == 0)
//		{
//			printf("登陆成功\n");
//			break;
//		}
//		else
//		{
//			printf("输入错误，还有%d次机会\n",i);
//		}
//	}
//	if(i == -1)
//		printf("密码三次错误，退出程序\n");
//	return 0;
//}
//#include<stdio.h>
//#include<stdlib.h> //rand
//#include<time.h>  //time
//void menu()
//{
//	printf("**********************************\n");
//	printf("**********  猜数字游戏  **********\n");
//	printf("**********   1.play     **********\n");
//	printf("**********   0.exit     **********\n");
//	printf("**********************************\n");
//}
//void game()
//{
//	int random_num = rand() % 100 + 1;//模100变成0到99
//	int input = 0;
//	while (1)
//	{
//		printf("请输入猜的数字(范围是1到100):");
//		scanf("%d", &input);
//		if (input > random_num)
//		{
//			printf("猜大了\n");
//		}
//		else if (input < random_num)
//		{
//			printf("猜小了\n");
//		}
//		else
//		{
//			printf("恭喜你，猜对了\n");
//			break;
//		}
//	}
//}
//int main()
//{
//	int input = 0;
//	srand((unsigned int)time(NULL)); //随机数种子
//	do
//	{
//		menu();
//		printf("请选择>:");
//		scanf("%d", &input);
//		switch (input)
//		{
//		case 1:
//			game();
//			break;
//		case 0:
//			break;
//		default:
//			printf("选择错误,请重新输入!\n");
//			break;
//		}
//	} while (input);
//	return 0;
//}
//#include<stdio.h>
//int main()
//{
//	int sum = 0;
//	for (int i = 8;i <= 100;i++)
//	{
//		//if (i % 10 == 9 || i / 10 == 9) 这样写99只算一个9
//		if (i % 10 == 9)  //个位的9
//			sum++;
//		if (i / 10 == 9)  //十位的9
//			sum++;
//	}
//	printf("有%d个", sum);
//	return 0;
//}

//计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值，打印出结果
//#include<stdio.h>
//int  main()
//{
//	double sum = 0;
//	int flag = 1;
//	for (int i = 1; i <= 100; i++)
//	{
//		sum += flag * 1.0 / i;
//		flag = -flag;
//	}
//	printf("%lf\n", sum);
//	return 0;
//}
//#include<stdio.h>
//int main()
//{
//	int arr[10] = { 0 };
//	for (int i = 0; i < 10; i++)
//	{
//		scanf("%d", &arr[i]);
//	}
//	int max = arr[0];
//	for (int i = 1; i < 10; i++)
//	{
//		if (arr[i] > max)
//			max = arr[i];
//	}
//	printf("max = %d\n", max);
//	return 0;
//}
//
//#include<stdio.h>
//int main()
//{
//    for (int i = 1;i <= 9;i++)    //外层循环穷举变量i从1至9
//    {
//        //处理每一行(第i行)
//        for (int j = 1;j <= i;j++)   //内层循环输出第i行乘法表(j从1穷举到i共i项)
//        {
//            printf("%d*%d=%d", j, i, j*i);//输出一项(第i行第j列) 
//            if (j < i)                    //控制每一项后面空格的输出(可以在积的输出用%2)
//                if (i*i < 10) printf("  "); //积小于10输出2个空格 
//                else     printf(" ");  //否则输出1个空格 
//        }
//        printf("\n");      //输出回车 
//    }
//    return 0;
//}
//#include<stdio.h>
//int main()
//{
//    int x, a, arr[10];
//    for (int i = 0;i < 10;i++)
//    {
//        scanf("%d", &a);
//        arr[i] = a;
//        if (i != 9)
//            printf("%d,", arr[i]);
//        else
//            printf("%d", arr[i]);
//    }
//    printf("\n");
//    int left = 0, right = sizeof(arr) / sizeof(arr[0]) - 1;
//      while(left<=right)
//      {
//          int tmp = arr[left];
//          arr[left] = arr[right];
//          arr[right] = tmp;
//          left++;
//          right--;
//      }
//    for (int i = 0;i < 10;i++)
//    {
//        if (i != 9)
//            printf("%d,", arr[i]);
//        else
//            printf("%d", arr[i]);
//    }
//    return 0;
//}
//#include<stdio.h>
//int is_leap_year(int year)
//{
//	if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
//		return 1;
//	else
//		return 0;
//}
//int main()
//{
//	int year;
//	scanf("%d", &year);
//	if (is_leap_year(year))
//		printf("%d是闰年\n", year);
//	else
//		printf("%d不是闰年\n", year);
//	return 0;
//}
//#include<stdio.h>
//void swap(int* a, int* b)
//{
//	int tmp = *a;
//	*a = *b;
//	*b = tmp;
//}
//int main()
//{
//	int x = 0, y = 0;
//	scanf("%d%d", &x, &y);
//	printf("交换前：%d %d\n", x, y);
//	swap(&x, &y);
//	printf("交换后：%d %d\n", x, y);
//	return 0;
//}
//#include<stdio.h>
//void print_multiplication_table(int n)
//{
//	for (int i = 1;i <= n;i++)
//	{
//		for (int j = 1;j <= i;j++)
//		{
//			printf("%d*%d=%2d ", j, i, j * i);
//		}
//		printf("\n");
//	}
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	print_multiplication_table(n);
//	return 0;
//}
//#include<stdio.h>
//void print(unsigned int n)
//{
//	if (n > 9)
//	{
//		print(n / 10);
//	}
//	printf("%u ", n % 10);
//}
//int main()
//{
//	unsigned int n = 0;
//	scanf("%u", &n);
//	print(n);
//	return 0;
//}
//#include<stdio.h>
//#include<string.h>
//int my_strlen1(const char* str)
//{
//	int k = 0;
//	while (*str != '\0')
//	{
//		k++;
//		str++;
//	}
//	return k;
//}
//int my_strlen2(const char* str)
//{
//	if (*str != '\0')
//		return 1 + my_strlen2(str + 1);
//	else
//		return 0;
//	//my(hello)
//	//my(hello)     1+my(ello) =5
//	//my(ello)      1+(llo)    =4
//	//my(llo)       1+my(lo)   =3
//	//my(lo)        1+my(o)    =2
//	//my(o)  return 1+my(\0)   =1
//	//my(\0):return 0;
//}
//int main()
//{
//	char arr[] = "hello";
//	printf("%d\n", my_strlen1(arr));
//	printf("%d\n", my_strlen2(arr));
//	return 0;
//}
//#include<stdio.h>
//int fac1(int n)
//{
//	int r = 1;
//	for (int i = 1;i <= n;i++)
//	{
//		r *= i;
//	}
//	return r;
//}
//int fac2(int n)
//{
//	if (n == 0)
//		return 1;
//	else
//		return n*fac2(n - 1);
//	//n=4时
//	//fac2(4):return 4*fac(3);      4*2*1
//	//fac2(3):return 3*fac(2);      3*2*1
//	//fac2(2):return 2*fac(1);      2*1
//	//fac1(0):return 1;
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	printf("%d的阶乘为：%d\n", n, fac1(n));
//	printf("%d的阶乘为：%d\n", n, fac2(n));
//	return 0;
//}
//#include<stdio.h>
////求得数据过大时可以把int换成long long
//int fib1(int n)
//{
//	int r = 1, arr[95] = { 0,1,1 };//定义数组长度为95(比90稍多一点)
//	for (int i = 3;i <= n;i++)
//	{
//		arr[i] = arr[i - 1] + arr[i - 2];
//	}
//	return arr[n];
//}
//int fib2(int n)
//{
//	if (n == 1 || n == 2)
//		return 1;
//	else
//		return fib2(n - 1) + fib2(n - 2);
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	for (int i = 1;i <= n;i++)
//	{
//		printf("第%d个斐波那切数为%d\n",i, fib1(i));
//	}
//	return 0;
//}
//#include<stdio.h>
//int my_strlen2(const char* str)
//{
//	if (*str != '\0')
//		return 1 + my_strlen2(str + 1);
//	else
//		return 0;
//}
//void reverse_string(char* str,int left, int right)
//{
//	if (left < right)
//	{
//		int tmp = str[left];
//		str[left] = str[right];
//		str[right] = tmp;
//		reverse_string(str, left + 1, right - 1);
//	}
//}
//int main()
//{
//	char arr[20] = { 0 };
//	scanf("%s", arr);
//	int left = 0, right = my_strlen2(arr) - 1;
//	printf("逆序前：%s\n", arr);
//	reverse_string(arr, left, right);
//	printf("逆序后：%s\n", arr);
//	return 0;
//}
//#include<stdio.h>
//int  digit_sum(int n)
//{
//    if (n > 9)
//        return n % 10 + digit_sum(n / 10);
//    else
//        return n;
//}
////d(1234):4+d(123)
////d(123):3+d(12)
////d(12):2+d(1)
////d(1):1
//int main()
//{
//    unsigned int n = 0;
//    scanf("%d", &n);
//    printf("%d", digit_sum(n));
//    return 0;
//}
//#include<stdio.h>
//double my_pow(int n, int k)
//{
//	if (k == 0)
//		return 1;
//	else if (k > 0)
//		return n * my_pow(n, k - 1);
//	else
//		return 1.0 / (my_pow(n, -k));
//	//p(3,4):return 3*p(3,3);   81
//	//p(3,3):return 3*p(3,2);   27
//	//p(3,2):return 3*p(3,1);   9
//	//p(3,1):return 3*p(3,0);   3
//	//p(3,0):return 1;
//}
//int main()
//{
//	int n = 0, k = 0;
//	scanf("%d%d", &n, &k);
//	printf("%lf\n", my_pow(n, k));
//	return 0;
//}
//#include <stdio.h>
//int main()
//{
//    char  arr[] = { 1,2,(3,4),5 };
//    printf("%d\n", sizeof(arr));
//    return 0;
//}
//#include<stdio.h>
//void bubble_sort(int arr[], int sz)
//{
//	for (int i = 0;i < sz - 1;i++)// size-1表示：最后一趟区间中只剩余1个元素，该趟冒泡可以省略
//	{
//		int flag = 1;
//		for (int j = 0;j < sz - i - 1;j++)
//		{
//			if (arr[j] > arr[j + 1])
//			{
//				int tmp = arr[j];
//				arr[j] = arr[j + 1];
//				arr[j + 1] = tmp;
//				flag = 0;
//				// 如果本次冒泡中，元素没有交换，则本次开始冒泡时，数据已经有序了
//				//后面的冒泡可以不用进行了（此时flag为1，跳出循环）
//			}
//		}
//		if (flag)
//			break;
//	}
//}
//int main()
//{
//	int arr[10] = { 0 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	for (int i = 0;i < sz;i++)
//	{
//		scanf("%d", &arr[i]);
//	}
//	bubble_sort(arr, sz);
//	printf("排序后:\n");
//	for (int i = 0;i < sz;i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	return 0;
//}

//创建一个整形数组，完成对数组的操作
//实现函数init() 初始化数组为全0
//实现print()  打印数组的每个元素
//实现reverse()  函数完成数组元素的逆置。
//#include<stdio.h>
//void init(int arr[], int sz)
//{
//	for (int i = 0;i < sz;i++)
//	{
//		arr[i] = 0;
//	}
//}
//void print(int arr[], int sz)
//{
//	for (int i = 0;i < sz;i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	printf("\n");
//}
//void reverse(int arr[], int sz)
//{
//	int left = 0, right = sz - 1;
//	while(left < right)
//	{
//		int tmp = arr[left];
//		arr[left] = arr[right];
//		arr[right] = tmp;
//		left++;
//		right--;
//	}
//}
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	printf("逆序和初始化前：");
//	print(arr, sz);
//
//	printf("逆序后：");
//	reverse(arr, sz);
//	print(arr, sz);
//
//	init(arr, sz);
//	printf("初始化后：");
//	print(arr, sz);
//	return 0;
//}

//将数组A中的内容和数组B中的内容进行交换。（数组一样大）
//#include<stdio.h>
//void print(int arr[], int sz)
//{
//	for (int i = 0;i < sz;i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	printf("\n");
//}
//int main()
//{
//	int arr1[] = { 0,1,2,3,4 };
//	int arr2[] = { 5,6,7,8,9 };
//	int sz = sizeof(arr1) / sizeof(arr1[0]);
//	printf("交换前：\n");
//	print(arr1, sz);
//	print(arr2, sz);
//	for (int i = 0;i < sz;i++)
//	{
//		int tmp = arr1[i];
//		arr1[i] = arr2[i];
//		arr2[i] = tmp;
//	}
//	printf("交换后：\n");
//	print(arr1, sz);
//	print(arr2, sz);
//	return 0;
//}

//操作符详解
//编写代码实现：求一个整数存储在内存中的二进制中1的个数。
//写一个函数返回参数二进制中 1 的个数。
//比如： 15    0000 1111    4 个 1

//采用相邻的两个数据进行按位与运算
//举例：
//9999：0010 0111 0000 1111
//9998：0010 0111 0000 1110

//8192: 0010 0000 0000 0000
//8191: 0001 1111 1111 1111
//第一次循环：n = 9999   n = n & (n - 1) = 9999 & 9998 = 9998
//第二次循环：n = 9998   n = n & (n - 1) = 9998 & 9997 = 9996
//第三次循环：n = 9996   n = n & (n - 1) = 9996 & 9995 = 9992
//第四次循环：n = 9992   n = n & (n - 1) = 9992 & 9991 = 9984
//第五次循环：n = 9984   n = n & (n - 1) = 9984 & 9983 = 9728
//第六次循环：n = 9728   n = n & (n - 1) = 9728 & 9727 = 9216
//第七次循环：n = 9216   n = n & (n - 1) = 9216 & 9215 = 8192
//第八次循环：n = 8192   n = n & (n - 1) = 8192 & 8191 = 0

//可以观察下：此种方式，数据的二进制比特位中有几个1，循环就循环几次，而且中间采用了位运算，处理起来比较高效
//#include<stdio.h>
//int return1(int n)
//{
//	int count = 0;
//	while (n)
//	{
//		n = n & (n - 1);
//		count++;
//	}
//	return count;
//}
//int main()
//{
//	int a = 0;
//	scanf("%d", &a);
//	printf("%d", return1(a));
//	return 0;
//}

//编程实现：两个int（32位）整数m和n的二进制表达中，有多少个位(bit)不同？
//输入例子 :
//1999 2299
//输出例子 : 7

//#include<stdio.h>
//int return1(int n)
//{
//	int count = 0;
//	while (n)
//	{
//		n = n & (n - 1);
//		count++;
//	}
//	return count;
//}
//int main()
//{
//	int m = 0, n = 0;
//	scanf("%d%d", &m, &n);
//	int a = m ^ n;
//	printf("%d", return1(a));
//	return 0;
//}


//获取一个整数二进制序列中所有的偶数位和奇数位，分别打印出二进制序列
//#include<stdio.h>
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	printf("奇数位：\n");
//	for (int i = 30;i >= 0;i -= 2)
//	{
//		printf("%d ", 1 & (n >> i));
//	}
//	printf("\n偶数位：\n");
//	for (int i = 31;i >= 1;i -= 2)
//	{
//		printf("%d ", 1 & (n >> i));
//	}
//	return 0;
//}

//求Sn = a + aa + aaa + aaaa + aaaaa + ......的前n项之和，其中a是一个数字，
//例如：2 + 22 + 222 + 2222 + 22222
//输入：a和n
/*
思路：
通过观察可以发现，该表达式的第i项中有i个a数字，因此：
假设第i项为temp，则第i+1项为temp*10+a
具体参考以下代码
*/
//#include<stdio.h>
//int main()
//{
//	int a = 0, n = 0, temp = 0, sum = 0;
//	scanf("%d%d", &a, &n);
//	for (int i = 1;i <= n;i++)
//	{
//		temp = temp * 10 + a;
//		sum += temp;
//	}
//	printf("%d\n", sum);
//	return 0;
//}

//求出0～100000之间的所有“水仙花数”并输出。
//水仙花数是指一个n位数，其各位数字的n次方之和确好等于该数本身，
//如:153＝1^3＋5^3＋3^3，则153是一个“水仙花数”。
/*
思路：
此题的关键在于只要知道判断一个数据是否为水仙花数的方式，问题就迎刃而解。
假定给定一个数据data，具体检测方式如下：
1. 求取data是几位数
2. 获取data中每个位置上的数据，并对其进行立方求和
3. 对data中每个位上的数据立方求和完成后，在检测其结果是否与data相等即可，
相等：则为水仙花数
否则：不是
*/
//#include<stdio.h>
//#include<math.h>
//int main()
//{
//	int i = 0;
//	for (i = 0; i <= 999999; i++)
//	{
//		int n = 1;
//		int tmp = i;
//		int sum = 0;
//		//1. 求判断数字的位数
//		while (tmp / 10)
//		{
//			n++;
//			tmp = tmp / 10;
//		}
//
//		//2. 计算每一位的次方和
//		tmp = i;
//		while (tmp)
//		{
//			sum += pow(tmp % 10, n);
//			tmp = tmp / 10;
//		}
//
//		//3. 判断
//		if (sum == i)
//			printf("%d ", i);
//	}
//	return 0;
//}

//写一个函数打印arr数组的内容，不使用数组下标，使用指针。
//arr是一个整形一维数组。
//#include<stdio.h>
//void print_arr(int *p,int sz)
//{
//	for (int i = 0;i < sz;i++)
//	{
//		printf("%d", *(p + i));// *p: 取到p所指向位置的元素
//	}
//}
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	print_arr(arr, sz); // 数组名代表数组首元素的地址
//	return 0;
//}
//
//求出0～100000之间的所有“自幂数”并输出。
//自幂数是指一个 n 位数，它的每个位上的数字的 n 次幂之和等于它本身。
//（例如：当n为3时，有1 ^ 3 + 5 ^ 3 + 3 ^ 3 = 153，153即是n为3时的一个自幂数。）
//#include<stdio.h>
//#include<math.h>
//int main()
//{
//	for (int i = 0;i <= 100000;i++)
//	{
//		int tmp = i, sum = 0, n = 1;
//		while (tmp /= 10)
//		{
//			n++;
//		}
//		tmp = i;
//		for (;tmp;tmp /= 10)
//		{
//			sum += pow(tmp % 10, n);
//		}
//		if (sum == i)
//			printf("%d ", i);
//	}
//	return 0;
//}
// 
// 棱形图案
//#include<stdio.h>
//int main()
//{
//    int i, j, k = 1, n = 11;
//    char c = '*';
//    for (i = 1;i <= n / 2 + 1;i++)
//    {
//        for (j = 1;j <= (n / 2 + 1) - i;j++)
//            printf(" ");
//        for (j = 1;j <= 2 * i - 1;j++)
//            printf("%c", c);
//        printf("\n");
//    }
//    for (i = n / 2 + 2;i <= n;i++)
//    {
//        for (j = 1;j <= i - (n / 2 + 1);j++)
//            printf(" ");
//        for (j = (i - 2 * k) * 2 - 1;j >= 1;j--)
//        {
//            printf("%c", c);
//        }
//        k++;
//        printf("\n");
//    }
//    return 0;
//}

//写一个函数，使用指针逆序一个字符串的内容。
//#include<stdio.h>
//#include<string.h>
//void reverse(char* p)
//{
//	int sz = strlen(p);
//	int left = 0, right = sz - 1;
//	while (left < right)
//	{
//		int tmp = *(p + left);
//		*(p + left) = *(p + right);
//		*(p + right) = tmp;
//		left++;
//		right--;
//	}
//}
//int main()
//{
//	char arr[50] = { 0 };
//	scanf("%s", arr);
//	reverse(arr);
//	for(int i=0;i< sizeof(arr) / sizeof(arr[0]);i++)
//	{
//		printf("%c", arr[i]);
//	}
//	return 0;
//}

//喝汽水，1瓶汽水1元，2个空瓶可以换一瓶汽水，
//给20元，可以多少汽水（编程实现）。
//#include<stdio.h>
//int main()
//{
//	int money = 0, total = 0, empty = 0;
//	scanf("%d", &money);
//	total = money;
//	empty = total;
//	while (empty > 1)
//	{
//		total += empty / 2;
//		empty = empty / 2 + empty % 2;
//	}
//	printf("%d", total);
//	return 0;
//}

//模拟实现strcpy
//#include<stdio.h>
//#include<string.h>
//#include<assert.h>
//char* my_strcpy(char* dest,const char* src)//destination dest 目的   source src 源头
//{
//	assert(dest != NULL);
//	assert(src != NULL);
//	char* ret = dest;
//	while (*dest++ = *src++)
//	{
//		;
//	}
//	return ret;
//}
//int main()
//{
//	char arr1[30] = "******************";
//	char arr2[] = "hello world!";
//	//strcpy(arr1, arr2);
//	//my_strcpy(arr1, arr2);
//	printf("%s\n", my_strcpy(arr1, arr2));
//	return 0;
//}

//模拟实现strlen
//#include<stdio.h>
//#include<string.h>
//#include<assert.h>
//int my_strlen(const char* p)
//{
//	assert(p != NULL);
//	int n = 0;
//	while (*p++)
//	{
//		n++;
//	}
//	return n;
//}
//int main()
//{
//	char arr[] = "hello world!";
//	//int sz = strlen(arr);
//	int sz = my_strlen(arr);
//	printf("%d", sz);
//	return 0;
//}

//调整数组使奇数全部都位于偶数前面。
//输入一个整数数组，实现一个函数，
//来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分，
//所有偶数位于数组的后半部分。
//#include<stdio.h>
//void swap_arr(int arr[],int sz)
//{
//	int left = 0, right = sz - 1;
//	while(left<=right)
//	{
//		while (left % 2 == 1)
//		{
//			left++;
//		}
//		while (right % 2 == 0)
//		{
//			right--;
//		}
//		int tmp = arr[left];
//		arr[left] = arr[right];
//		arr[right] = tmp;
//		left++;
//		right--;
//	}
//}
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz= sizeof(arr) / sizeof(arr[0]);
//	swap_arr(arr,sz);
//	for (int i = 0;i < sz;i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//    int i, j, c = 0, arr[20], r;
//    float s = 0, s2 = 0, p, p2;
//    for (i = 0;i < 20;i++)
//    {
//        scanf("%d", &j);
//        arr[i] = j;
//        s += arr[i];
//    }
//    p = s / 20;
//    printf("所有评委平均分:%0.3f分.\n", p);
//    printf("不合格得分:");
//    for (i = 0;i < 20;i++)
//    {
//        if (arr[i] > p)
//        {
//            r = arr[i] - p;
//        }
//        else
//        {
//            r = p - arr[i];
//        }
//        if (r > 10)
//        {
//            printf("%d ", arr[i]);
//            arr[i] = 0;
//            c++;
//        }
//        else
//        {
//            continue;
//        }
//    }
//    printf(".\n");
//    for (i = 0;i < 20;i++)
//    {
//        s2 += arr[i];
//    }
//    if (s2 == 0)
//    {
//        printf("无合格打分.");
//    }
//    else
//    {
//        p2 = s2 / (20 - c);
//        printf("最后得分:%0.3f分.", p2);
//    }
//    return 0;
//}

#include<stdio.h>
#include<string.h>
void reverse(char* p)
{
    int sz = strlen(p);
    int left = 0, right = sz - 1;
    while (left < right)
    {
        int tmp = *(p + left);
        *(p + left) = *(p + right);
        *(p + right) = tmp;
        left++;
        right--;
    }
}
int main()
{
    char arr[50] = { 0 };
    scanf("%s", arr);
    reverse(arr);
    for (int i = 0;i < sizeof(arr) / sizeof(arr[0]);i++)
    {
        printf("%c", arr[i]);
    }
    return 0;
}